package com.lianjia.sh.se.message.event.client.model;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 *
 * Created by yangsp1 on 16/7/15.
 */
public class MessageEvent implements Serializable {
    //消息唯一编号
    String eventUUId = UUID.randomUUID().toString().replaceAll("-","");

    //业务数据
    Object data;

    //项目编码（唯一，与listener对应即可）
    String projectCode;

    //服务编码（唯一，与listener对应即可）
    String serviceCode;

    //操作者员工号
    Integer operatorEmpNo;

    //操作者ip
    String operatorIp;

    //操作时间
    Date operateTime = new Date();

    //扩展数据
    Map<String,Object> extendData = new HashMap<>();

    /**
     * 消息uuid，用于分布式/集群环境追踪同一消息，及失败重试
     * 自动生成，非空
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public String getEventUUId() {
        return eventUUId;
    }

    public void setEventUUId(String eventUUId) {
        this.eventUUId = eventUUId;
    }

    /**
     * 业务数据
     *
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public Object getData(){
        return data;
    }

    public void setData(Object data){
        this.data = data;
    }

    /**
     * 项目分类：消息来源所属项目
     *
     * 非空
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    /**
     * 业务(服务)分类：消息来源所属业务
     * 如：业主中心-短信
     *    房源登盘-登盘
     *
     * 非空
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public String getServiceCode() {
        return serviceCode;
    }

    public void setServiceCode(String serviceCode) {
        this.serviceCode = serviceCode;
    }

    /**
     * 操作该业务的员工号
     *
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public Integer getOperatorEmpNo(){
        return this.operatorEmpNo;
    }

    public void setOperatorEmpNo(Integer empNo){
        this.operatorEmpNo = empNo;
    }

    /**
     * 操作该业务者的ip
     *
     * 非空
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public String getOperatorIp(){
        return operatorIp;
    }

    public void setOperatorIp(String operatorIp){
        this.operatorIp = operatorIp;
    }

    /**
     * 操作时间
     *
     * 自动生成，当前时间，非空
     * @return string
     * @author yangjiangping
     * @since 2016 -07-15 15:34
     */
    public Date getOperateTime(){
        return operateTime;
    }

    public void setOperateTime(Date operateTime){
        this.operateTime = operateTime;
    }

    /**
     * 扩展数据
     * @return
     */
    public Map<String,Object> getExtendData(){
        return extendData;
    }

    public void setExtendData(Map<String, Object> extendData){
        this.extendData = extendData;
    }
}
